<img src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/20241213002811.png"/>

## 文档

在互联网大厂，文档是非常重要的一项内容。从产品出PRD、研发设计、代码评审、系统架构以及你的晋升答辩，都会用到编写文档的各项工具。比如：XMind、Visio、PPT等。有些公司也会自行安装一些文档，比如 confluence

## 工具

大部分时候无论是否在互联网工作，工具项还是非常相同的，除非你是在一个非常传统的行业，或者说你是跨语言了。这里的工具包括：JDK、IntelliJ IDEA、Navicat、Postman、Xshell、Xftp、Maven、代码库、Git、TortoiseGit等。

## 技术

这部分内容主要是以你在建设什么样的系统而决定你会用到哪些技术内容，除了最基本的 Spring、SpringBoot、MyBatis、RPC、MQ、Redis这些非常常用的以外，如果你需要用到分库分表，那么会涉及到数据库路由组件，在数据库分库分表后又会需要用到数据整合汇总的服务，比如通过Mysql的binlog日志，把数据通过Otter同步到ES中。而这些背景下你可能还会需要用到分布式任务以及分布式事务的组件，但也可以基于MQ做最终一致性。另外在互联网应用开发中，都是采用前后端分离的，这个时候会有服务端把如RPC这样的接口，转换为http服务，但这种转换只需要把RPC接口配置到网关平台即可，而不需要自己处理http开发。另外网关服务上会提供诸如白名单、黑名单、防刷、切量、限流等各种服务治理的能力。当然在给前端的接口上，也会有一些是LVS/F5、Nginx、CDN等各项能力来保障系统的可用度。

## 数据

在技术层面我们提到了分库分表的Mysql汇总到ES，同时还会有一些如 HBase 等大型数据服务，用于使用量化模型做数据分析以及生成人群标签等各项内容。

## 上线
除了一些小公司刀耕火种的上线方式外，还会有像是大公司里非常方便自动化的上线系统，它们的内核开发有的是基于Jenkins，也有一些是自研的，当然还有上云的服务。另外上线后还会有对应的JMeter压测服务和运行日志实时查询服务。

## 监控
其实关于系统的监控、数据库的监控，都是非常重要的，尤其是对那些业务体量较大、流量较高、有秒杀和大促的业务场景时，就更需要颗粒度更细的监控系统。比如需要知道 TP99、TP999、可用率、响应时长、TPS、QPS等各种指标，来判断服务的整体可用度。另外在数据库层面的监控需要知道当前的IO吞吐量、慢查询、事务、可用连接数、LOAD等综合指标和日常的数据报表。这些都是可以非常方便地反馈出整体服务的可用度。

